// import * as juejinApi from './service/juejin.js';
import * as boyaApi from './service/boya.js';

/* ===================================================掘金方法======================================================== */
// // 请求拦截，发送请求头前，为请求头注入origin属性
// chrome.webRequest.onBeforeSendHeaders.addListener(
//   function(details) {
//     details.requestHeaders.push({
//       name: 'origin',
//       value: 'https://juejin.cn',
//     });
//     return {
//       requestHeaders: details.requestHeaders,
//     };
//   },
//   {
//     urls: ['*://*.juejin.cn/*'],
//   },
//   ['blocking', 'requestHeaders', 'extraHeaders']
// );

// // 提示方式，打开掘金页面
// function openJuejin(title) {
//   alert(title);
// }

// /**
//  * 掘金自动签到
//  */
// const JuejinAutoSignin = async () => {
//   const querySignin = await juejinApi.querySignin(); // 查询是否已签到
//   if (querySignin.err_no !== 0) return openJuejin('签到失败，请检查是否已登录掘金~');
//   // 已签到
//   if (querySignin.data) {
//     console.log('掘金~今日已签到');
//     JuejinAutoLuckDraw(); // 自动抽奖
//     return;
//   }

//   // 未签到
//   const noSignin = await juejinApi.singnin();
//   if (noSignin.err_no !== 0) return openJuejin('签到失败，请检查是否已登录掘金~');
//   console.log(`掘金签到成功~ 当前矿石：${noSignin.data.sum_point}`);
//   JuejinAutoLuckDraw(); // 自动抽奖
// };

// /**
//  * 掘金自动抽奖
//  */
// const JuejinAutoLuckDraw = async () => {
//   // 查询是否有免费抽奖次数
//   const luckDraw = await juejinApi.freeLuckDrawSecond();
//   if (luckDraw.err_no !== 0) return openJuejin('抽奖失败，请检查是否已登录掘金~');
//   // 已抽奖
//   if (luckDraw.data.free_count === 0) return console.log('掘金~今日已抽奖');

//   // 未抽奖
//   const noLuckDraw = await juejinApi.freeLuckDraw();
//   if (noLuckDraw.err_no !== 0) return openJuejin('抽奖失败，请检查是否已登录掘金~');
//   alert(`恭喜抽到：${noLuckDraw.data.lottery_name}`);
// };

/* ===================================================播鸭方法======================================================== */
/**
 * 播鸭自动签到
 */
const BoyaAutoSignin = async token => {
  const result = await boyaApi.signin(token);

  // token过期或无效，删除token
  function tisp(title) {
    alert(title);
    chrome.storage.sync.remove('token');
  }
  if (!result.errors) return console.log('播鸭~今日签到成功~');
  if (result.errors?.code === 403102) return console.log('播鸭~今日已签到~');
  if (result.errors?.code === 403161) return tisp('播鸭Token无效~');
  if (result.errors?.code === 403171) return tisp('播鸭Token已过期，请重新登录播鸭~');
};

// 监听onAlarm事件（警报监听）
chrome.alarms.onAlarm.addListener(() => {
  // 执行初始化函数
  init();
  console.log(new Date().toLocaleTimeString());
});

// 监听onMessage事件（通信监听）
chrome.runtime.onMessage.addListener(message => {
  if (message?.type === 'SIGN_CONNECT') return;
  // 保持storage
  chrome.storage.sync.set(message);
});

// 监听storage变化
chrome.storage.onChanged.addListener(changes => {
  console.log(changes);
  const keys = Object.keys(changes);
  keys.forEach(key => {
    const value = changes[key].newValue;
    if (value) {
      // 判断执行哪个方法
      const payload = {
        // uuid: () => juejinApi.getLucky(value),
        token: () => BoyaAutoSignin(value),
      };
      payload[key] && payload[key]();
    }
  });
});

// 入口函数 - 初始化方法
function init() {
  alert('已执行初始化函数');

  // JuejinAutoSignin(); // 掘金自动签到抽奖

  // chrome.storage.sync.get('uuid', ({ uuid }) => {
  //   uuid && juejinApi.getLucky(uuid); // 沾福气
  // });

  chrome.storage.sync.get('token', ({ token }) => {
    token && BoyaAutoSignin(token); // 播鸭自动签到
  });

  /**
   * 启动计时警报 - 指定时间后重新执行初始化函数
   */
  let date = new Date();
  date = date.setDate(date.getDate() + 1);
  date = new Date(date);
  const y = date.getFullYear(); // 年
  const m = date.getMonth() + 1; // 月
  const d = date.getDate(); // 日
  const diffTime = new Date(`${y}-${m}-${d} 9:00:00`).getTime() - Date.now(); // 计算当前时间至指定时间的时间戳
  const delayInMinutes = parseInt(diffTime / 1000 / 60); // 毫秒换算分钟

  // 先清空所有警报在创建新的警报
  chrome.alarms.clearAll();
  chrome.alarms.create(null, { delayInMinutes });
}
init();
